package icefaces;

import business.PropostaSessionLocal;
import com.sun.rave.web.ui.appbase.AbstractSessionBean;
import entity.EveAreaTematica;
import java.security.InvalidParameterException;
import java.util.ArrayList;
import javax.ejb.EJB;
import javax.faces.FacesException;
import javax.faces.model.SelectItem;

/**
 * <p>Session scope data bean for your application.  Create properties
 *  here to represent cached data that should be made available across
 *  multiple HTTP requests for an individual user.</p>
 *
 * <p>An instance of this class will be created for you automatically,
 * the first time your application evaluates a value binding expression
 * or method binding expression that references a managed bean using
 * this class.</p>
 *
 * @version PropostaSessionBean.java
 * @version Created on 09/09/2009, 16:39:16
 * @author uel
 */

public class PropostaBean extends AbstractSessionBean {
    @EJB
    private PropostaSessionLocal propostaSessionBean;

    private SelectItem[] listaAreaTematica;
    

    private String valueAreaTematica;

    private EveAreaTematica areaTematica;
    
    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">    
    
    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
    }
    // </editor-fold>

    /**
     * <p>Construct a new session data bean instance.</p>
     */
    public PropostaBean() {
        areaTematica = new EveAreaTematica();
    }

    /**
     * <p>This method is called when this bean is initially added to
     * session scope.  Typically, this occurs as a result of evaluating
     * a value binding or method binding expression, which utilizes the
     * managed bean facility to instantiate this bean and store it into
     * session scope.</p>
     * 
     * <p>You may customize this method to initialize and cache data values
     * or resources that are required for the lifetime of a particular
     * user session.</p>
     */
    @Override
    public void init() {
        // Perform initializations inherited from our superclass
        super.init();
        // Perform application initialization that must complete
        // *before* managed components are initialized
        // TODO - add your own initialiation code here

        popListaAreaTematica();
        
        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("PropostaSessionBean Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
        }
        
        // </editor-fold>
        // Perform application initialization that must complete
        // *after* managed components are initialized
        // TODO - add your own initialization code here
    }

    /**
     * <p>This method is called when the session containing it is about to be
     * passivated.  Typically, this occurs in a distributed servlet container
     * when the session is about to be transferred to a different
     * container instance, after which the <code>activate()</code> method
     * will be called to indicate that the transfer is complete.</p>
     * 
     * <p>You may customize this method to release references to session data
     * or resources that can not be serialized with the session itself.</p>
     */
    @Override
    public void passivate() {
    }

    /**
     * <p>This method is called when the session containing it was
     * reactivated.</p>
     * 
     * <p>You may customize this method to reacquire references to session
     * data or resources that could not be serialized with the
     * session itself.</p>
     */
    @Override
    public void activate() {
    }

    /**
     * <p>This method is called when this bean is removed from
     * session scope.  Typically, this occurs as a result of
     * the session timing out or being terminated by the application.</p>
     * 
     * <p>You may customize this method to clean up resources allocated
     * during the execution of the <code>init()</code> method, or
     * at any later time during the lifetime of the application.</p>
     */
    @Override
    public void destroy() {
    }

    /**
     * <p>Retornar uma referência para o Bean de dados limitados.</p>
     *
     * @retorna uma referência para o bean de dados limitados
     */
    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }

    /**
     *  Função para preencher uma lista.
     */
    public void popListaAreaTematica(){
        EveAreaTematica[] lista = propostaSessionBean.getAllAreaTematica();

        ArrayList<SelectItem> l = new ArrayList<SelectItem>();
        SelectItem selectItem = new SelectItem(0, "Selecione a Area");
        l.add(selectItem);

        for (EveAreaTematica listaItem : lista) {
            selectItem = new SelectItem(listaItem.getCodAreaTematica(), listaItem.getDesAreaTematica());
            //System.out.println(listaItem.getCodAreaTematica() + " - " + listaItem.getDesAreaTematica());
            l.add(selectItem);
        }
                
        this.setListaAreaTematica(l.toArray(new SelectItem[l.size()]));
        
    }

    /**
     *
     * @param EveAreaTematica entity
     * @return FALSE se o cadastro não for realizado, e TRUE se o cadastro for realizado com sucesso.
     */
    public boolean cadastrarAreaTematica(EveAreaTematica tematica){
        Boolean retorno = true;
        try {
            this.propostaSessionBean.insertAreaTematica(tematica);
        } catch (InvalidParameterException ex) {
            retorno = false;            
        } 
        return retorno;
    }

    public EveAreaTematica getAreaTematicaById(Integer codigo){
        return propostaSessionBean.getAreaByID(codigo);
    }

    public SelectItem[] getListaAreaTematica() {
        return listaAreaTematica;
    }

    public void setListaAreaTematica(SelectItem[] listaAreaTematica) {
        this.listaAreaTematica = listaAreaTematica;
    }

    public EveAreaTematica getAreaTematica() {
        return areaTematica;
    }

    public void setAreaTematica(EveAreaTematica areaTematica) {
        this.areaTematica = areaTematica;
    }

    public String getValueAreaTematica() {
        return valueAreaTematica;
    }

    public void setValueAreaTematica(String valueAreaTematica) {
        this.valueAreaTematica = valueAreaTematica;
    }

    
    
}
